/**
 * File: ICurtainArgumentParserCallback.java
 * Created by: mhaimel
 * Created on: 6 Jul 2009
 * CVS:  $Id: ICurtainArgumentParserCallback.java,v 1.2 2009/10/09 14:44:02 mhaimel Exp $
 */
package uk.ac.ebi.curtain.configuration;

import java.io.File;

import uk.ac.ebi.curtain.utils.data.FileType;
import uk.ac.ebi.curtain.utils.data.ReadType;

/**
 * @author mhaimel
 *
 */
public interface ICurtainArgumentParserCallback {

	/**
	 * Print help message <br>
	 * if status > 0, the program exits uses status as exit code  
	 * @param status Integer, if > 0 -> system exit
	 * @param msg Message printed to system error
	 */
	void printHelp(int status, String msg);

	void setWorkingDirectory(File workingDir);

	void setKmer(Integer kmer);
	void setFilterCovMin(Integer minCov);
	
	void setFilterCovMax(Integer maxCov);

	void setInsertLength(String catId, Integer insertLength);

	void setInsertLengthSd(String catId, Integer sd);
	
	void setVelvetMinPairCount(Integer value);

	void setMinPairCount(String cat, Integer count);
	void setMaxPairCount(String cat, Integer count);
	
	void setMaxPartialCount(String cat, Integer count);	 
 
	void addBatchScope(Integer start, Integer end); 

	void setStartpoint(String startPoint);

	void addContigFile(FileType type, File ... fileArr);

	void addMapViewFile(String id, FileType fType, ReadType rType, File ... fileArr);

	void addReadFile(String category, FileType ftype, ReadType rType, File ... fileArr);

	void setIteration(Integer iteration);

	void setUseContigInput(boolean b);

	void setDistanceinfo(boolean b);
	
	void setPipelineType(String pipeline);

	void setVelvetForce(boolean b);

	void setVelvetUnpaired(boolean b);

	void setVelvetCoverageCalculation(boolean b);
	
}
